Custom Authentication এবং Authorization

Mobile App Development - মিটিয়র (Meteor) - Accounts এবং Authentication
199

Meteor এ Authentication এবং Authorization ব্যবস্থাপনা অত্যন্ত গুরুত্বপূর্ণ একটি দিক। Authentication হলো ব্যবহারকারীর পরিচয় যাচাই করা, অর্থাৎ নিশ্চিত করা যে ব্যবহারকারী সত্যিই কে সে দাবি করছে। Authorization হলো সেই পরিচিত ব্যবহারকারীকে নির্দিষ্ট কার্যকলাপে অনুমতি দেওয়া, যেমন একটি নির্দিষ্ট রিসোর্সে অ্যাক্সেস প্রদান বা সীমাবদ্ধ করা।

Meteor এর ডিফল্ট প্যাকেজের মাধ্যমে সহজে authentication ও authorization পরিচালনা করা যায়, কিন্তু custom authentication এবং authorization ব্যবস্থাপনা তৈরি করতে চাইলে কিছু কোড এবং কাস্টম লজিক ব্যবহার করতে হয়। এখানে Custom Authentication এবং Custom Authorization ব্যবস্থাপনার একটি বিস্তারিত নির্দেশনা দেওয়া হলো।


Custom Authentication

Meteor ডিফল্টভাবে accounts-base প্যাকেজের মাধ্যমে ইউজারের Authentication পরিচালনা করে, কিন্তু আপনি চাইলে custom authentication সিস্টেমও তৈরি করতে পারেন। এর জন্য Meteor Methods এবং custom validation ব্যবহার করা হয়।

১. Custom Login ফাংশন

ধরা যাক, আপনি নিজস্ব ইউজার ভেরিফিকেশন লজিক তৈরি করতে চান, যেখানে আপনি ডাটাবেস থেকে ইউজারের ইমেইল এবং পাসওয়ার্ড যাচাই করবেন।

// Server side - Custom login function
Meteor.methods({
  'customLogin': function(email, password) {
    // Check email and password validity
    const user = Users.findOne({ email: email });
    if (user && user.password === password) {
      // Create a custom login session if validation is successful
      this.setUserId(user._id);
      return true; // Login successful
    }
    throw new Meteor.Error('login-failed', 'Invalid email or password');
  }
});

এই কোডটি Users Collection এ ইউজারের তথ্য যাচাই করবে এবং সঠিক হলে তাকে লগ ইন করবে। this.setUserId() ব্যবহার করা হয়েছে যাতে সিস্টেমটি ব্যবহারকারীকে সেশন হিসেবে শনাক্ত করতে পারে।

২. Custom Signup ফাংশন

Custom Signup এর জন্য, আপনি পাসওয়ার্ড এবং ইমেইল যাচাই করে নতুন ইউজার তৈরি করতে পারেন।

// Server side - Custom Signup function
Meteor.methods({
  'customSignup': function(email, password) {
    // Check if user already exists
    const existingUser = Users.findOne({ email: email });
    if (existingUser) {
      throw new Meteor.Error('user-exists', 'User with this email already exists');
    }

    // Create a new user in the database
    const newUser = {
      email: email,
      password: password,
      createdAt: new Date()
    };
    const userId = Users.insert(newUser);

    // Return the userId for further usage
    return userId;
  }
});

এটি নতুন ইউজার তৈরি করার জন্য একটি কাস্টম ফাংশন। ইউজারের ইমেইল এবং পাসওয়ার্ড যাচাই করা হয়, এবং যদি ইউজার না থাকে তবে নতুন ইউজার তৈরি করা হয়।


Custom Authorization

Authorization এর মাধ্যমে আপনি নির্দিষ্ট রিসোর্স বা কার্যকলাপে কোন ইউজারের অ্যাক্সেস প্রদান বা সীমাবদ্ধ করতে পারেন। Meteor এর ডিফল্ট প্যাকেজ যেমন accounts-base-এ কিছু authorization ব্যবস্থা রয়েছে, কিন্তু আপনি চাইলে নিজের কাস্টম authorization সিস্টেম তৈরি করতে পারেন।

১. Custom Authorization Method

// Server side - Custom Authorization function
Meteor.methods({
  'accessResource': function(resourceId) {
    const userId = this.userId; // Current logged-in user
    if (!userId) {
      throw new Meteor.Error('not-authorized', 'User is not logged in');
    }

    // Check if the user has permission to access the resource
    const user = Users.findOne(userId);
    if (user.role !== 'admin') {
      throw new Meteor.Error('access-denied', 'You do not have permission to access this resource');
    }

    // If authorized, allow access to the resource
    const resource = Resources.findOne(resourceId);
    return resource;
  }
});

এখানে, accessResource মেথডটি কাস্টম authorization লজিক ব্যবহার করে ইউজারের role চেক করে। যদি ইউজারের role admin না হয়, তবে অ্যাক্সেস নিষিদ্ধ করা হয়।

২. User Role Management

কাস্টম authorization লজিকের জন্য, আপনাকে সাধারণত ইউজারের role বা permission সংরক্ষণ করতে হবে। উদাহরণস্বরূপ:

// Server side - User role management
Users.update(userId, {
  $set: { role: 'admin' }
});

এটি ইউজারের রোল admin হিসেবে সেট করবে, এবং পরবর্তীতে authorization চেকের জন্য এটি ব্যবহার করা যাবে।


Custom Authentication এবং Authorization এর সিকিউরিটি

  1. Password Hashing:
    পাসওয়ার্ড নিরাপদ রাখতে bcrypt বা hashing মেথড ব্যবহার করা গুরুত্বপূর্ণ। এটি ইউজারের পাসওয়ার্ড সঠিকভাবে এনক্রিপ্ট করে রাখে।
  2. Token-based Authentication:
    JWT (JSON Web Token) ব্যবহার করে token-based authentication তৈরি করা সম্ভব। এটি API-এর জন্য একটি আধুনিক এবং নিরাপদ অথেন্টিকেশন পদ্ধতি।
  3. Role-based Authorization:
    Role-based authorization ব্যবহার করে আপনি বিভিন্ন ইউজারের জন্য বিভিন্ন পারমিশন তৈরি করতে পারেন। যেমন, admin, editor, user ইত্যাদি।
  4. Security Best Practices:
    সবসময় HTTPS ব্যবহার করুন, পাসওয়ার্ড বা সেশন ডেটা secure cookie এ সংরক্ষণ করুন, এবং SQL ইনজেকশন, XSS এবং CSRF আক্রমণ থেকে সুরক্ষা নিশ্চিত করুন।

সারাংশ

Custom Authentication এবং Custom Authorization তৈরি করার মাধ্যমে আপনি আপনার Meteor অ্যাপ্লিকেশনের সিকিউরিটি এবং ইউজার ম্যানেজমেন্ট আরও কাস্টমাইজ করতে পারবেন। Meteor.methods ব্যবহার করে আপনি কাস্টম লগইন, সাইনআপ এবং রোল-বেসড অথোরাইজেশন সিস্টেম তৈরি করতে পারবেন। সঠিক নিরাপত্তা ব্যবস্থা যেমন password hashing এবং role management ব্যবহার করলে এটি আরও সুরক্ষিত হবে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...